/**
 * request 网络请求工具
 * 更详细的 api 文档: https://github.com/umijs/umi-request
 */
import {extend} from 'umi-request';
import {message} from "antd";
import {history} from "umi";
import {stringify} from "querystring";


/**
 * 配置request请求时的默认参数
 */
const request = extend({
  credentials: 'include', // 默认请求是否带上cookie
  // requestType: 'form',
});

/**
 * 所有请求拦截器
 */
request.interceptors.request.use((url, options): any => {
  //在控制台输出日志
  console.log(`do request url = ${url}`)
  return {
    url,
    options: {
      ...options,
      headers: {
      },
    },
  };
});

/**
 * 所有响应拦截器
 */
request.interceptors.response.use(async (response, options): Promise<any> => {
  //从响应中取出数据
  const res = await response.clone().json();
  //如果响应码为0，说明正确，返回封装数据
  if (res.code === 0){
    return res.data;
  }
  //如果响应码为40100，说明未登录，提示错误,
  if (res.code === 40100){
    //提示错误
    message.error(res.message);
    //跳转到登录界面
    history.replace({
      pathname:'/user/login',
      search:stringify({
        redirect:location.pathname
      })
    })
  }
  //处理其他错误信息
  else{
    return message.error(res.description);
  }
  return res.data;
});

export default request;
